Skip to content

ci: validate application release version metadata - #140

Merged
steipete merged 1 commit into
mainfrom
audit/app-release-metadata
Oct 12, 2026
Merged

steipete merged 1 commit into
mainfrom
audit/app-release-metadata

Conversation

@steipete

Copy link
Copy Markdown
Contributor

The application source release could accept a tag version that differed from the root package version. Validate package.json before Git or network work, and run the regression tests as part of the release workflow.

The SDK release namespace and publication flow are unchanged. Updated release documentation and the existing changelog section.

Validation: python3 -B scripts/test_release_preflight.py (3 tests), actionlint .github/workflows/release.yml, and independent autoreview (P0–P3) passed. No tag or release was created.

@steipete
steipete requested a review from a team as a code owner October 12, 2026 08:18
@clawsweeper

clawsweeper Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@clawsweeper clawsweeper Bot added P2 Normal priority bug or improvement with limited blast radius. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Oct 12, 2026
@clawsweeper

clawsweeper Bot commented Oct 12, 2026

Copy link
Copy Markdown

Codex review: needs maintainer review before merge.

What this changes

This PR rejects application releases whose version differs from root package.json and adds release-workflow regression tests.

Example: Release version 1.2.3 is requested while package.json contains version 1.2.2.

  • Before: Preflight could continue if the other release checks passed.
  • After: Preflight rejects the mismatch before Git or network calls.

Review scores

Measure Result What it means
Overall readiness 🦐 gold shrimp (3/6) A focused, source-verified repair with useful unit coverage and green checks; validation does not demonstrate the shipped release entry point.
Proof confidence 🦐 gold shrimp (3/6) Ordinary contributor proof is exempt under the supplied maintainer-authored classification; reported unit tests support the guard, but no shipped release-path run is claimed.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Product

Kind: Bug fix · Worth it: Yes · Fix scope: Complete
User problem: Release operators could publish an application archive under a version that disagreed with its root package metadata.
Reason: The narrow validation closes a concrete consistency gap, and direction is established by the supplied maintainer-authored classification and the author's prior merged application release work.

Merge readiness

✅ Ready for maintainer review

Keep this PR open: it closes a real application release validation gap on main, and the focused patch introduces no identified defect.

Priority: P2
Reviewed head: 3bb6300f84b36a8a9b3daba2f97c6c19730aac82

Before merge

None.

Findings

None.

Agent review details

How this fits together

The application release workflow passes a requested version and checked-out source into preflight, then builds and publishes an archive only after validation succeeds.

flowchart TD
  A[Tag push or manual dispatch] --> B[Application release workflow]
  B --> C[Package version validation]
  C --> D[Source signature and CI checks]
  D --> E[Source archive and checksums]
  E --> F[GitHub release publication]
Loading

Technical review

Best possible solution:

Land the package-version guard in the existing application preflight while preserving the separate SDK release contract.

Do we have a high-confidence way to reproduce the issue?

Main never compares the requested application version with package.json, so mismatched metadata can pass when the existing release gates succeed; no target code was executed during this review.

Is this the best way to solve the issue?

The existing preflight is the correct owner for this check, and the patch rejects invalid metadata early without adding a parallel release path.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning medium; reviewed against b245202dec20.

Provenance checked

  • Application release preflight keeps the original intent (b245202: Provide signed application source releases with immutable archives, changelog notes, protected-main ancestry, and exact-commit push CI.)

Testing

Proof path: unit tests only.

Security

None.

Evidence

What I checked:

  • Exact introduced change: The pinned diff adds a two-line package-version comparison to the existing preflight, a regression-test workflow step, tests, documentation, and an Unreleased changelog entry. (scripts/release-preflight.py:39, 3bb6300f84b3)
  • Current main still needs the guard: Main validates version syntax and then proceeds directly to Git and release checks without comparing package.json; GitHub main still points to the pinned base. (scripts/release-preflight.py:39, b245202dec20)
  • Regression coverage: The mismatch fixture checks rejection before API access; the matching-version fixture proceeds to the existing exact-commit push-CI gate. Additional cases protect dated, unique, nonempty release notes. (scripts/test_release_preflight.py:13, 3bb6300f84b3)
  • Original release intent and ownership: ci: validate signed releases and add no-publish rehearsals #139 introduced the application release owner and required protected-main history, signed immutable tags, and exact-commit push CI; this PR preserves those checks. (.github/workflows/release.yml:39, b245202dec20)
  • Policy and owner direction: Root AGENTS.md was read in full; no scoped ancestor policies or maintainer-note entries were present for these paths. The supplied maintainer-authored classification and prior merged release work establish direction. The single-reviewer instruction overrides the repository helper requirement; no helper or second reviewer ran. (AGENTS.md, 3bb6300f84b3)
  • Discussion and validation: The complete body reports three passing Python tests and actionlint; both comments contain review-status updates only. All ten current head checks completed successfully. No release-path execution evidence was supplied. (3bb6300f84b3)

Likely related people:

  • Peter Steinberger: Raw commit b245202 adds scripts/release-preflight.py:31 relative to its recorded parents. This identifies author metadata, not feature responsibility or a PR merger. (role: source-line author; confidence: high; commits: b245202dec20; files: scripts/release-preflight.py)

Labels

Label changes:

  • add P2: This prevents inconsistent application release metadata without evidence of a current user-facing outage.
  • add rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦐 gold shrimp and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR.

Label justifications:

  • P2: This prevents inconsistent application release metadata without evidence of a current user-facing outage.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦐 gold shrimp and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR.

Rating scale

6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior.

Workflow

ClawSweeper edits this one comment on every review. Comment @clawsweeper re-review for a fresh review only. Repair and merge execution lanes are retired.

Reviewed October 12, 2026, 4:21 AM ET / 08:21 UTC.

@steipete
steipete merged commit c6843b3 into main Oct 12, 2026
13 checks passed
@steipete
steipete deleted the audit/app-release-metadata branch October 12, 2026 08:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal priority bug or improvement with limited blast radius. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant